Created _gtk_tree_view_column_request_width().
authorTristan Van Berkom <tristan.van.berkom@gmail.com>
Wed, 1 Dec 2010 03:41:42 +0000 (12:41 +0900)
committerTristan Van Berkom <tristan.van.berkom@gmail.com>
Sun, 5 Dec 2010 13:12:16 +0000 (22:12 +0900)
Removed gtk_tree_view_get_real_requested_width_from_column() from
gtktreeview.c in favor of this function in the treeviewcolumn domain
(since this function goes and checks treeviewcolumn internals, settings
and derives the real requested width, seems logical this should be done
by the treeviewcolumn instead).

gtk/gtktreeprivate.h
gtk/gtktreeview.c
gtk/gtktreeviewcolumn.c

index b033ec3e45439605ad32b2beb2ee658e81771d6d..942a2a3f60ac428b26a2980e774044f4c9cb6014 100644 (file)
@@ -106,6 +106,7 @@ void _gtk_tree_view_column_unrealize_button (GtkTreeViewColumn *column);
  
 void _gtk_tree_view_column_set_tree_view    (GtkTreeViewColumn *column,
                                             GtkTreeView       *tree_view);
+gint _gtk_tree_view_column_request_width    (GtkTreeViewColumn *tree_column);
 void _gtk_tree_view_column_allocate         (GtkTreeViewColumn *tree_column,
                                             int                x_offset,
                                             int                width,
index e63d471a14fce7ecc2183cad9a07114e61a101a1..136eda87d33c43914961d3fdff6ba2b0fc03258b 100644 (file)
@@ -2414,16 +2414,11 @@ gtk_tree_view_update_size (GtkTreeView *tree_view)
   /* keep this in sync with size_allocate below */
   for (list = tree_view->priv->columns, i = 0; list; list = list->next, i++)
     {
-      gint max_width, min_width;
-      gint real_requested_width = 0;
-
       column = list->data;
       if (!gtk_tree_view_column_get_visible (column))
        continue;
 
-      real_requested_width = gtk_tree_view_get_real_requested_width_from_column (tree_view, column);
-
-      tree_view->priv->width += real_requested_width;
+      tree_view->priv->width += _gtk_tree_view_column_request_width (column);
     }
 
   if (tree_view->priv->tree == NULL)
@@ -2553,48 +2548,6 @@ invalidate_last_column (GtkTreeView *tree_view)
     }
 }
 
-static gint
-gtk_tree_view_get_real_requested_width_from_column (GtkTreeView       *tree_view,
-                                                    GtkTreeViewColumn *column)
-{
-  gint max_width, min_width;
-  gint real_requested_width;
-
-  if (_gtk_tree_view_column_get_use_resized_width (column))
-    {
-      real_requested_width = _gtk_tree_view_column_get_resized_width (column);
-    }
-  else if (gtk_tree_view_column_get_sizing (column) == GTK_TREE_VIEW_COLUMN_FIXED)
-    {
-      real_requested_width = gtk_tree_view_column_get_fixed_width (column);
-    }
-  else if (GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_HEADERS_VISIBLE))
-    {
-      GtkWidget *button = gtk_tree_view_column_get_button (column);
-      gint       button_request;
-
-      gtk_widget_get_preferred_width (button, &button_request, NULL);
-
-      real_requested_width = MAX (_gtk_tree_view_column_get_requested_width (column), button_request);
-    }
-  else
-    {
-      real_requested_width = _gtk_tree_view_column_get_requested_width (column);
-      if (real_requested_width < 0)
-        real_requested_width = 0;
-    }
-
-  min_width = gtk_tree_view_column_get_min_width (column);
-  if (min_width != -1)
-    real_requested_width = MAX (real_requested_width, min_width);
-
-  max_width = gtk_tree_view_column_get_max_width (column);
-  if (max_width != -1)
-    real_requested_width = MIN (real_requested_width, max_width);
-
-  return real_requested_width;
-}
-
 /* GtkWidget::size_allocate helper */
 static void
 gtk_tree_view_size_allocate_columns (GtkWidget *widget,
@@ -2638,7 +2591,7 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget,
       if (!gtk_tree_view_column_get_visible (column))
        continue;
 
-      full_requested_width += gtk_tree_view_get_real_requested_width_from_column (tree_view, column);
+      full_requested_width += _gtk_tree_view_column_request_width (column);
 
       if (gtk_tree_view_column_get_expand (column))
        number_of_expand_columns++;
@@ -2685,8 +2638,6 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget,
        list != (rtl ? first_column->prev : last_column->next);
        list = (rtl ? list->prev : list->next)) 
     {
-      GtkWidget *button;
-      GdkWindow *window;
       gint internal_column_width = 0;
       gint old_width, column_width;
 
@@ -2714,7 +2665,7 @@ gtk_tree_view_size_allocate_columns (GtkWidget *widget,
          continue;
        }
 
-      column_width = gtk_tree_view_get_real_requested_width_from_column (tree_view, column);
+      column_width = _gtk_tree_view_column_request_width (column);
 
       if (gtk_tree_view_column_get_expand (column))
        {
index fff962c6c007af472ecf8b5417cbe3e3cec0bc27..07f9880d4fc60b3f7d01420ccccc59b5c52fe4b0 100644 (file)
@@ -1869,6 +1869,45 @@ gtk_tree_view_column_get_width (GtkTreeViewColumn *tree_column)
   return tree_column->priv->width;
 }
 
+gint
+_gtk_tree_view_column_request_width (GtkTreeViewColumn *tree_column)
+{
+  GtkTreeViewColumnPrivate *priv;
+  gint real_requested_width;
+
+  priv = tree_column->priv;
+
+  if (priv->use_resized_width)
+    {
+      real_requested_width = priv->resized_width;
+    }
+  else if (priv->column_type == GTK_TREE_VIEW_COLUMN_FIXED)
+    {
+      real_requested_width = priv->fixed_width;
+    }
+  else if (gtk_tree_view_get_headers_visible (GTK_TREE_VIEW (priv->tree_view)))
+    {
+      gint button_request;
+
+      gtk_widget_get_preferred_width (priv->button, &button_request, NULL);
+      real_requested_width = MAX (priv->requested_width, button_request);
+    }
+  else
+    {
+      real_requested_width = priv->requested_width;
+      if (real_requested_width < 0)
+        real_requested_width = 0;
+    }
+
+  if (priv->min_width != -1)
+    real_requested_width = MAX (real_requested_width, priv->min_width);
+
+  if (priv->max_width != -1)
+    real_requested_width = MIN (real_requested_width, priv->max_width);
+
+  return real_requested_width;
+}
+
 void
 _gtk_tree_view_column_allocate (GtkTreeViewColumn *tree_column,
                                int                x_offset,